package com.app;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;

public class Service {
	/**
	 * 查找本路径下的所有的文件，如果是文件就读取文件，读取其中的所有的注释，是文件夹就遍历
	 * 
	 * @param path
	 *            要查找的路径
	 */
	public static void find(String path, FileWriter fw,String strCode) {
		// 将路径构造成一个文件
		File file = new File(path);
		// 判断是不是文件夹
		if (file.isDirectory()) {
			// 是文件夹
			File[] paths = file.listFiles();
			for (File i : paths) {
				find(i.getPath(), fw,strCode);
			}
		} else {
			// 是文件，进行读取
			BufferedReader bfr = null;
			InputStreamReader fr = null;
			try {
				fr = new InputStreamReader(new FileInputStream(file), strCode);
				bfr = new BufferedReader(fr);
				String string = "";
				// 是否在注释里
				boolean flag = false;
				// flase代表双斜杠注释
				boolean flag1 = false;
				// 判断是不是输出了文字，来判断需不需要换行
				boolean flag2 = false;
				while ((string = bfr.readLine()) != null) {
					if (!flag1) {
						flag = false;
					}
					char[] chs = { ' ', ' ' };
					for (int i = 0; i < string.length(); i++) {

						char ch = string.charAt(i);

						// 获得前一个和现在两个字符
						chs[0] = chs[1];
						chs[1] = ch;
						String chsToStr = new String(chs);

						// 是否在注释里
						if (flag) {
							// 在注释里
							// 本次输出了文字
							flag2 = true;
							// 结束注释
							if (chsToStr.equals("*/")) {
								flag = false;
							}

							fw.write(ch + "");

						} else {
							// 不在注释里
							if (chsToStr.equals("//")) {
								flag1 = false;
								flag = true;
							} else if (chsToStr.equals("/*")) {
								flag1 = true;
								flag = true;
							}
						}

					}
					if (flag2) {
						fw.write("\r\n");
						flag2 = false;
					}

				}

			} catch (Exception e) {
				e.printStackTrace();
			}
		}

	}
}
